#!/bin/fish

set app_version $argv[1]

if test -z $app_version
    echo 请指定版本号！
    exit
end

# 基本构建路径
set base_output target

# 文件夹存在则清理上次构建
if test -d $base_output
    echo 清理上次构建...
    rm -r $base_output
end

mkdir -p $base_output

# 文件名称
set exe_name landsat-fetch

# 创建一个配置文件模板
# 参数1：配置文件输出路径
function create_config_file
    # 配置文件输出路径
    set config_out_path $argv[1]
    # 配置文件模板内容
    set config_content '# 认证相关配置
auth:
  # 用户名
  username: "Your User Name"
  # M2M API Token
  token: "Your Token"
# 下载相关配置
download:
  # 下载的任务列表label名称列表
  labels:
    - "bulk-download-0"
    - "bulk-download-1"
  # 单个文件下载并发数
  concurrent: 16
  # 同时下载的文件数
  parallel-count: 5
  # 下载文件夹
  folder: "downloads"'
    # 输出配置
    echo $config_content >$config_out_path
end

# 构建一个发行版
# 参数1：构建目标操作系统，可用值：windows, linux
function build_release
    # 处理参数
    set build_os $argv[1]
    # 根据构建目的系统，确认输出文件的格式和打包格式
    set output_exe_name $exe_name
    set archive_format tar.xz
    if test $build_os = windows
        set output_exe_name $output_exe_name.exe
        set archive_format 7z
    end
    # 构建临时文件夹
    set temp_dir $base_output/$build_os
    # 构建程序
    echo 正在构建代码...
    set output_exe_path $temp_dir/$output_exe_name
    GOOS=$build_os GOARCH=amd64 go build -ldflags "-w -s" -o $output_exe_path
    # 压缩可执行文件
    echo 正在压缩...
    upx -9 $output_exe_path
    # 创建配置文件模板
    echo 创建配置文件模板...
    create_config_file $temp_dir/config.yaml
    # 执行打包
    echo 正在打包...
    set output_archive_path $base_output/$exe_name-$build_os-amd64-$app_version
    if test $archive_format = 7z
        7z a -t7z -mx9 $output_archive_path.7z ./$temp_dir/*
    else
        tar -cJvf $output_archive_path.tar.xz -C $temp_dir .
    end
    # 清理
    echo 构建完成！
    echo 正在清理...
    rm -r $temp_dir
end

# 调用构建函数
build_release windows
build_release linux
